Range Addition

Assume you have an array of length n initialized with all 0’s and are given k update operations.

Each operation is represented as a triplet: [startIndex, endIndex, inc] which increments each element of subarray A[startIndexendIndex] (startIndex and endIndex inclusive) with inc.

Return the modified array after all k operations were executed.

Example:

  1. Given:
  2. length = 5,
  3. updates = [
  4. [1, 3, 2],
  5. [2, 4, 3],
  6. [0, 2, -2]
  7. ]
  8. Output:
  9. [-2, 0, 3, 5, 3]

Explanation:

  1. Initial state:
  2. [ 0, 0, 0, 0, 0 ]
  3. After applying operation [1, 3, 2]:
  4. [ 0, 2, 2, 2, 0 ]
  5. After applying operation [2, 4, 3]:
  6. [ 0, 2, 5, 5, 3 ]
  7. After applying operation [0, 2, -2]:
  8. [-2, 0, 3, 5, 3 ]

Hint:

  1. Thinking of using advanced data structures? You are thinking it too complicated.
  2. For each update operation, do you really need to update all elements between i and j?
  3. Update only the first and end element is sufficient.
  4. The optimal time complexity is O(k + n) and uses O(1) extra space.